package titiritero.vista;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.util.ArrayList;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;

import tablero.Casillero;
import tablero.Tablero;
import titiritero.ControladorJuego;
import ataques.Atacador;
import ataques.Mina;

public class VentanaJuego extends JPanel {

    private static final long serialVersionUID = 1L;
    PanelTablero panelTablero;
    JLabel puntos;
    PanelAtaques panelAtaques;
    SalirAMenu salir;

    public VentanaJuego(ControladorJuego controlador) {
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        setBounds(0, 0, screenSize.width, screenSize.height - 70); // x,y,ancho,alto
        setVisible(false);
        setLayout(new BorderLayout());

        panelTablero = new PanelTablero(controlador);
        panelTablero.setPreferredSize(new Dimension(getWidth() * 9 / 10, getHeight()));
        add(panelTablero, BorderLayout.WEST);

        panelAtaques = new PanelAtaques(controlador);
        panelAtaques.setPreferredSize(new Dimension(getWidth() / 10, getHeight()));
        add(panelAtaques, BorderLayout.EAST);
        puntos = new JLabel();
        salir = new SalirAMenu();
        salir.addActionListener(controlador);
        puntos.setHorizontalAlignment(SwingConstants.CENTER);
        panelAtaques.add(puntos);
        panelAtaques.add(salir);
    }

    private void dibujarPanelTablero(Tablero tablero) {
        ArrayList<ArrayList<Casillero>> casilleros = tablero.getTablero();
        ArrayList<Mina> minas = new ArrayList<Mina>();
        for (int i = 0; i < tablero.getFilas(); i++) {
            for (int j = 0; j < tablero.getFilas(); j++) {
                panelTablero.setFondoBoton(i, j, new ImageIcon("src/agua.jpg"));
                if (casilleros.get(i).get(j).getMinas().size() > 0) {
                    minas.add(casilleros.get(i).get(j).getMinas().get(0));
                }
            }
        }
        panelTablero.dibujar();
        panelTablero.dibujarMinas(minas);

    }

    public void dibujar(Tablero tablero, int points, int cantidadTurnos) {
        dibujarPanelTablero(tablero);
        String texto = "<html>Puntos: " + points;
        texto += "<br/> Turnos: " + cantidadTurnos;
        puntos.setText(texto);
        panelAtaques.actualizar();
        paintComponents(getGraphics());
    }

    public Atacador getAtaque() {
        return panelAtaques.getAtaqueActual();
    }

    public void setVistas(ArrayList<Dibujable> vistasBarcos) {
        panelTablero.setVistas(vistasBarcos);

    }

}
